a = 10
b = 20

if (a and b):
    print("1 - 变量 a 和 b 都为 true")
else:
    print("1 - 变量 a 和 b 有一个不为 true")

if (a or b):
    print("2 - 变量 a 和 b 都为 true，或其中一个变量为 true")
else:
    print("2 - 变量 a 和 b 都不为 true")

# 修改变量 a 的值
a = 0
if (a and b):
    print("3 - 变量 a 和 b 都为 true")
else:
    print("3 - 变量 a 和 b 有一个不为 true")

if (a or b):
    print("4 - 变量 a 和 b 都为 true，或其中一个变量为 true")
else:
    print("4 - 变量 a 和 b 都不为 true")

if not (a and b):
    print("5 - 变量 a 和 b 都为 false，或其中一个变量为 false")
else:
    print("5 - 变量 a 和 b 都为 true")




""" 下面是可用运算符的速览：

- `+`（加）
    - 两个对象相加。
    - `3+5` 则输出 `8`。`'a' + 'b'` 则输出 `'ab'`。

- `-`（减）
    - 从一个数中减去另一个数，如果第一个操作数不存在，则假定为零。
    - `-5.2` 将输出一个负数，`50 - 24` 输出 `26`。

- `*`（乘）
    - 给出两个数的乘积，或返回字符串重复指定次数后的结果。
    - `2 * 3` 输出 `6`。`'la' * 3` 输出 `'lalala'`。

- `**` （乘方）
    - 返回 x 的 y 次方。
    - `3 ** 4` 输出 `81` （即 `3 * 3 * 3 * 3`）。

- `/` （除）
    - x 除以 y
    - `13 / 3` 输出 `4.333333333333333`。

- `//` （整除）
    - x 除以 y 并对结果_向下_取整至最接近的整数。
    - `13 // 3` 输出 `4`。
    - `-13 // 3` 输出 `-5`。

- `%` （取模）
    - 返回除法运算后的余数。
    - `13 % 3` 输出 `1`。`-25.5 % 2.25` 输出 `1.5`。

- `<<` （左移）
    - 将数字的位向左移动指定的位数。（每个数字在内存中以二进制数表示，即 0 和1）
    - `2 << 2` 输出 `8`。 `2` 用二进制数表示为 `10`。
    - 向左移 2 位会得到 `1000` 这一结果，表示十进制中的 `8`。

- `>>` （右移）
    - 将数字的位向右移动指定的位数。
    - `11 >> 1` 输出 `5`。
    - `11` 在二进制中表示为 `1011`，右移一位后输出 `101` 这一结果，表示十进制中的 `5`。

- `&` （按位与）
    - 对数字进行按位与操作。[^1]
    - `5 & 3` 输出 `1`。

- `|` （按位或）
    - 对数字进行按位或操作。[^2]
    - `5 | 3` 输出 `7`。

- `^`（按位异或）
    - 对数字进行按位异或操作。[^3]
    - `5 ^ 3` 输出 `6`。

- `~` （按位取反）[^4]
    - x 的按位取反结果为 -(x+1)。
    - `~5` 输出 `-6`。有关本例的更多细节可以参阅：http://stackoverflow.com/a/11810203 。

- `<` （小于）
    - 返回 x 是否小于 y。所有的比较运算符返回的结果均为 `True` 或 `False`。请注意这些名称之中的大写字母。
    - `5 < 3` 输出 `False`，`3 < 6` 输出 `True`。
    - 比较可以任意组成组成链接：`3 < 5 < 7` 返回 `True`。

- `>` （大于）
    - 返回 x 是否大于 y。
    - `5 > 3` 返回 `True`。如果两个操作数均为数字，它们首先将会被转换至一种共同的类型。否则，它将总是返回 `False`。

- `<=` （小于等于）
    - 返回 x 是否小于或等于 y。
    - `x = 3; y = 6; x<=y` 返回 `True`。

- `>=` （大于等于）
    - 返回 x 是否大于或等于 y。
    - `x = 4; y = 3; x>=3` 返回 `True`。

- `==` （等于）
    - 比较两个对象是否相等。
    - `x = 2; y = 2; x == y` 返回 `True`。
    - `x = 'str'; y = 'stR'; x == y` 返回 `False`。
    - `x = 'str'; y = 'str'; x == y` 返回 `True`。

- `!=` （不等于）
    - 比较两个对象是否不相等。
    - `x = 2; y = 3; x != y` 返回 `True`。

- `not` （布尔“非”）[^5]
    - 如果 x 是 `True`，则返回 `False`。如果 x 是 `False`，则返回 `True`。
    - `x = True; not x` 返回 `False`。

- `and` （布尔“与”）[^6]
    - 如果 x 是 `False`，则 `x and y` 返回 `False`，否则返回 y 的计算值。
    - 当 x 是 `False` 时，`x = False; y = True; x and y` 将返回 `False`。在这一情境中，Python 将不会计算 y，因为它已经了解 and 表达式的左侧是 `False`，这意味着整个表达式都将是 `False` 而不会是别的值。这种情况被称作短路计算（Short-circuit Evaluation）。

- `or`（布尔“或”）[^7]
    - 如果 x 是 `True`，则返回 `True`，否则它将返回 y 的计算值。
    - `x = Ture; y = False; x or y` 将返回 `Ture`。在这里短路计算同样适用。
 """
 